package com.bdzl.flow.dao;

import com.bdzl.pub.entity.flow.ActNodeDO;
import com.bdzl.pub.vo.flow.ActNodeVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 工作流节点信息表
 * @author yangyicai
 * @email yangyicai@foxmail.com
 * @date 2021-05-12 10:14:58
 */
public interface ActNodeDao {

	ActNodeDO get(Integer nodeId);

	List<ActNodeVO> list(Map<String,Object> map);

	int count(Map<String,Object> map);

	int save(ActNodeDO actNode);

	int update(ActNodeDO actNode);

	int remove(Integer node_id);

	int batchRemove(Integer[] nodeIds);

	/**
	 * @Description: TODO 根据id查询工作流程
	 * @param nodeId id
	 * @return: com.bdzl.pub.vo.flow.ActNodeVO
	 * @Author: Ming
	 * @Date: 2021/5/13 14:15
	 */
	ActNodeVO getProcess(Integer nodeId);

	/**
	 * @Description: TODO 查询所有节点数据
	 * @param nodeActKey 所属工作流模型
	 * @return: com.bdzl.pub.util.param.PageUtils
	 * @Author: Ming
	 * @Date: 2021/5/18 14:29
	 */
	List<ActNodeVO> getNode(String nodeActKey);

	/**
	 * @Description: TODO 根据当前节点获取下一节点数据
	 * @param annNodeNow 当前节点编号
	 * @param annFormula 进行下一节点条件公式
	 * @return: java.lang.String
	 * @Author: Ming
	 * @Date: 2021/5/18 16:15
	 */
	ActNodeVO getNextNodeByNow(@Param("annNodeNow") Integer annNodeNow,@Param("annFormula") String annFormula);
	/**
	 * @Description: TODO 根据订单号查询下一步审核节点数据
	 * @param acrOdr 订单号
	 * @return: java.util.List<com.bdzl.pub.vo.flow.ActNodeVO>
	 * @Author: Ming
	 * @Date: 2021/5/18 18:59
	 */
	List<ActNodeVO> getNextNode(String acrOdr);

	/**
	 * @Description: TODO 根据订单号查询驳回审核节点数据
	 * @param acrOdr 订单号
	 * @return: java.util.List<com.bdzl.pub.vo.flow.ActNodeVO>
	 * @Author: Ming
	 * @Date: 2021/5/18 18:59
	 */
	List<ActNodeVO> getRejectNode(String acrOdr);

	/**
	 * @Description: TODO 根据订单状态的值查询下一步节点数据
	 * @param statVal 订单状态
	 * @return: com.bdzl.pub.util.param.R
	 * @Author: Ming
	 * @Date: 2021/5/18 17:38
	 */
	List<ActNodeVO> getOdrStatusByStatVal(String statVal);
}
